import base from './base'

export default {



  /**
   * @func 使用内置地图查看位置接口
   * @param {Object} query 请求参数
   * @param {number} latitude  纬度，浮点数，范围为90 ~ -90
   * @param {number} longitude 经度，浮点数，范围为180 ~ -180
   * @param {string} name 位置名
   * @param {string} address 地址详情说明
   * @param {number} scale 地图缩放级别,整形值,范围从1~28。默认为16
   * @returns {Promise} 返回一个Promise
   */
  openLocation: function (query) {
    return new Promise(async (resolve, reject) => {
      wx.openLocation({
        latitude: query && query.latitude ? query.latitude : 0, // 纬度，浮点数，范围为90 ~ -90
        longitude: query && query.longitude ? query.longitude : 0, // 经度，浮点数，范围为180 ~ -180。
        name: query && query.name, // 位置名
        address: query && query.address, // 地址详情说明
        scale: query && query.scale ? query.scale : 16, // 地图缩放级别,整形值,范围从1~28。默认为16
        complete: function (res) {
          resolve(res);
          console.log("打开地图----", res);
        }
      });
    });
  },


  /**
   * @func 获取地理位置接口
   * @param {Boolean} isGps   true-使用gps坐标, false-使用火星坐标 （openLocation方法可用）
   * @returns {Promise} 返回一个Promise
   * @returns {number} latitude  纬度，浮点数，范围为90 ~ -90
   * @returns {number} longitude  经度，浮点数，范围为180 ~ -180
   * @returns {number} speed  速度，以米/每秒计
   * @returns {number} accuracy  位置精度
   * @returns {number} gps_status   gps状态，-1：应用未获取GPS权限；0：已获取GPS权限，GPS信号异常；1：已获取GPS权限，GPS信号正常，AGPS信号异常；2：已获取GPS权限，GPS信号异常，AGPS信号正常；3：已获取GPS权限，GPS/AGPS信号正常
   */
  getLocation: function (isGps) {
    return new Promise(async (resolve, reject) => {
      wx.getLocation({
        type: isGps ? 'wgs84' : "gcj02", //默认为wgs84的gps坐标，如果要返回直接给openLocation用的火星坐标，可传入'gcj02'
        complete: function (res) {
          resolve(res);
          console.log("获取地理位置接口----", res);
        }
      });
    });
  },









  /**
   * @func 打开持续定位接口
   * @desc 开始持续获取LBS信息
   * @param {Object} query 请求参数
   * @param {boolean} isGc  是否为火星坐标，wgs84是gps坐标，gcj02是火星坐标
   * @param {number} continue 默认关闭，值为1的时候启用。页面关闭后，也可继续获取成员的位置信息。需在“应用详情” - “接收消息”页面配置“实时位置信息事件”回调接口，此参数才会生效。
   * @returns {Promise} 返回一个Promise
   */
  startAutoLBS: function (query) {
    return new Promise(async (resolve, reject) => {
      base.agentConfig().then(() => {
        wx.invoke("startAutoLBS", {
          type: query && query.isGc ? 'gcj02' : "wgs84",
          continue: query && query.continue ? query.continue : 0,
        }, (res) => {
          resolve(res);
          console.log("开始持续获取LBS信息----", res);
        }
        );
      });
    })
  },




  /**
   * @func 停止持续定位接口
   * @desc 停止获取LBS信息
   * @returns {Promise} 返回一个Promise
   */
  stopAutoLBS: function () {
    return new Promise(async (resolve, reject) => {
      base.agentConfig().then(() => {
        wx.invoke("stopAutoLBS",
          {}, (res) => {
            resolve(res);
            console.log("停止获取LBS信息----", res);
          }
        );
      });
    })
  },




  /**
   * @func 监听地理位置变化
   * @desc 用于监听地理位置的变化，前提是已经成功调用startAutoLBS。（注意：需提醒用户一直停留在当前页面）
   * @returns {Promise} 返回一个Promise
   * @returns {number} latitude  纬度，浮点数，范围为90 ~ -90
   * @returns {number} longitude  经度，浮点数，范围为180 ~ -180
   * @returns {number} speed  速度，以米/每秒计
   * @returns {number} accuracy  位置精度
   */
  onLocationChange: function () {
    return new Promise(async (resolve, reject) => {
      wx.onLocationChange(
        function (res) {
          resolve(res);
          console.log("监听地理位置变化-----", res)
        }
      );
    })
  },




}